struct _PPM_IDLE_STATES// Size=0x5a8
{
    unsigned char InterfaceVersion;// Offset=0x0 Size=0x1
    unsigned char IdleOverride;// Offset=0x1 Size=0x1
    unsigned char EstimateIdleDuration;// Offset=0x2 Size=0x1
    unsigned char ExitLatencyTraceEnabled;// Offset=0x3 Size=0x1
    unsigned char NonInterruptibleTransition;// Offset=0x4 Size=0x1
    unsigned char UnaccountedTransition;// Offset=0x5 Size=0x1
    unsigned char IdleDurationLimited;// Offset=0x6 Size=0x1
    unsigned char IdleCheckLimited;// Offset=0x7 Size=0x1
    unsigned char StrictVetoBias;// Offset=0x8 Size=0x1
    unsigned long ExitLatencyCountdown;// Offset=0xc Size=0x4
    unsigned long TargetState;// Offset=0x10 Size=0x4
    unsigned long ActualState;// Offset=0x14 Size=0x4
    unsigned long OldState;// Offset=0x18 Size=0x4
    unsigned long OverrideIndex;// Offset=0x1c Size=0x4
    unsigned long ProcessorIdleCount;// Offset=0x20 Size=0x4
    unsigned long Type;// Offset=0x24 Size=0x4
    unsigned long long LevelId;// Offset=0x28 Size=0x8
    unsigned short ReasonFlags;// Offset=0x30 Size=0x2
    unsigned long long InitiateWakeStamp;// Offset=0x38 Size=0x8
    long PreviousStatus;// Offset=0x40 Size=0x4
    unsigned long PreviousCancelReason;// Offset=0x44 Size=0x4
    struct _KAFFINITY_EX PrimaryProcessorMask;// Offset=0x48 Size=0x108
    struct _KAFFINITY_EX SecondaryProcessorMask;// Offset=0x150 Size=0x108
    void  ( * IdlePrepare)(struct _PROCESSOR_IDLE_PREPARE_INFO * );// Offset=0x258 Size=0x8
    long  ( * IdlePreExecute)(void * ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x260 Size=0x8
    long  ( * IdleExecute)(void * ,unsigned long long ,unsigned long ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x268 Size=0x8
    unsigned long  ( * IdlePreselect)(void * ,struct _PROCESSOR_IDLE_CONSTRAINTS * );// Offset=0x270 Size=0x8
    unsigned long  ( * IdleTest)(void * ,unsigned long ,unsigned long );// Offset=0x278 Size=0x8
    unsigned long  ( * IdleAvailabilityCheck)(void * ,unsigned long );// Offset=0x280 Size=0x8
    void  ( * IdleComplete)(void * ,unsigned long ,unsigned long ,unsigned long ,unsigned long * );// Offset=0x288 Size=0x8
    void  ( * IdleCancel)(void * ,unsigned long );// Offset=0x290 Size=0x8
    unsigned char  ( * IdleIsHalted)(void * );// Offset=0x298 Size=0x8
    unsigned char  ( * IdleInitiateWake)(void * );// Offset=0x2a0 Size=0x8
    struct _PROCESSOR_IDLE_PREPARE_INFO PrepareInfo;// Offset=0x2a8 Size=0x58
    struct _KAFFINITY_EX DeepIdleSnapshot;// Offset=0x300 Size=0x108
    struct _PERFINFO_PPM_STATE_SELECTION * Tracing;// Offset=0x408 Size=0x8
    struct _PERFINFO_PPM_STATE_SELECTION * CoordinatedTracing;// Offset=0x410 Size=0x8
    struct _PPM_SELECTION_MENU ProcessorMenu;// Offset=0x418 Size=0x10
    struct _PPM_SELECTION_MENU CoordinatedMenu;// Offset=0x428 Size=0x10
    struct _PPM_COORDINATED_SELECTION CoordinatedSelection;// Offset=0x438 Size=0x18
    struct _PPM_IDLE_STATE State[1];// Offset=0x450 Size=0x158
};